Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.06.2017, 22:31
Аспирант
Отправить личное сообщение для daimon0482 Посмотреть профиль Найти все сообщения от daimon0482
 
Регистрация: 14.05.2017
Сообщений: 61

как запретить отправку формы если маил занят.
помогите пожалуйста завершить эту проверку маила на занятость?

$(document).ready(function(){
// Email
    $("#email").change(function(){
        email = $("#email").val();
       
            $.ajax({
                url: "testingLoginEmail.php",
                type: "POST",
                data: "email=" + email,
                cache: false,           
                success: function(response){
                 if(response == "no"){
                    $("#email").next().hide().text("Этот электронный адрес занят!").fadeIn(400);
                    $("#email").removeClass().addClass("inputRed");                 
                }else{                  
                    $("#email").removeClass().addClass("inputGreen");
                    $("#email").next().text("");
                    
                }                   
            }
        });
      });
        $("#email").keyup(function(){
        $("#email").removeClass();
        $("#email").next().text("");
        });
    });
Ответить с цитированием
  #2 (permalink)  
Старый 20.06.2017, 02:46
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

А где тут отправление формы? Делайте кнопку отправки формы недоступной по умолчанию, а доступной по результату проверки. Только учтите, что и отправление формы, это опять обязательная проверка сервером, включая и занятость.

А это $("#email").keyup(function() выбросить - одно из двух, либо да, либо нет.
Ответить с цитированием
  #3 (permalink)  
Старый 20.06.2017, 07:13
Аспирант
Отправить личное сообщение для daimon0482 Посмотреть профиль Найти все сообщения от daimon0482
 
Регистрация: 14.05.2017
Сообщений: 61

кнопка отправки формы
<input type="submit" name="submit" value="Отправить" id="submit">
Ответить с цитированием
  #4 (permalink)  
Старый 20.06.2017, 07:19
Аспирант
Отправить личное сообщение для daimon0482 Посмотреть профиль Найти все сообщения от daimon0482
 
Регистрация: 14.05.2017
Сообщений: 61

блокировка кнопки не хотелось бы не будет работать другая валидация пока не активируется кнопка. возможно ли использовать как то return="false"
Ответить с цитированием
  #5 (permalink)  
Старый 20.06.2017, 07:24
Аспирант
Отправить личное сообщение для daimon0482 Посмотреть профиль Найти все сообщения от daimon0482
 
Регистрация: 14.05.2017
Сообщений: 61

у меня на эту форму есть отдельная валидация на другие поля, может есть возможность объединить их?

$(document).ready(function(){
 
    $("#formregist").validate({
  // правила для полей с именем и паролем
       rules:{ 
 
            surname:{
                required: true, // поле для имени обязательное для заполнения
                minlength:2, // Минимальное число символов - 2
            },
 
            name:{
                required: true, // поле обязательное для заполнения
                minlength:2, // Минимальное число символов - 2
            },
            patronymic:{
                required: true, // поле обязательное для заполнения
                minlength:2, // Минимальное число символов - 2
            },
            telephone:{
                required: true, // поле обязательное для заполнения
                digits:true, // толька цифры
                rangelength: [10, 10], // номер телефона должен состоять из 10 цифр!
            },
            email:{
                required: true, // поле обязательное для заполнения
                email: true,    // Пожалуйста, введите действительный адрес электронной почты
            },
            password:{
                required: true, // поле обязательное для заполнения
                minlength: 6, // Минимальное число символов - 6
                maxlength:20,// Максимальное число символов -20
            },
            r_password:{
                required: true, // поле обязательное для заполнения
                equalTo: "#password",
            },
       },
  // сообщение для поля с именем и пароля, если что-то было не по правилам
       messages:{
 
            surname:{
                required: " <p class='err'><b>Это поле обязательно для заполнения!</b></p>", 
                minlength: "<p class='err'><b>Фамилия должно быть не менее 2 символов!</b></p>",
            },
            name:{
                required: " <p class='err'><b>Это поле обязательно для заполнения!</b></p>", 
                minlength: "<p class='err'><b>Имя должно быть не менее 2 символов!</b></p>",
            },
            patronymic:{
                required: " <p class='err'><b>Это поле обязательно для заполнения!</b></p>", 
                minlength: "<p class='err'><b>Отчество должно быть не менее 2 символов!</b></p>",
            },
            telephone:{
                required: "<p class='err'><b>Это поле обязательно для заполнения!</b></p>", 
                digits: "<p class='err'><b>Номер телефона должен состоять только из цифр!</b></p>",
                rangelength: "<p class='err'><b>Номер телефона должен состоять из 10 цифр!</b></p> ",
            },
            email:{
                required: "<p class='err'><b>Это поле обязательно для заполнения!</b></p>", 
                email: "<p class='err'><b>Введите корректный адрес электронной почты!</b></p>",
            },
            password:{
                required: "<p class='err'><b> Это поле обязательно для заполнения!</b></p>", 
                minlength: "<p class='err'><b>Пароль должен быть не менее 6 символов!</b></p>",
                maxlength: "<p class='err'><b>Пароль должно быть не более 20 символов!</b></p>",
            },
            r_password:{
                required: "<p class='err'><b>Это поле обязательно для заполнения</b></p>", 
                equalTo: "<p class='err'><b>Пароли не совпадают!</b></p>",
            },
 
       }
 
    }); 
});
Ответить с цитированием
  #6 (permalink)  
Старый 20.06.2017, 07:31
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

<input type="submit" value="Отправить" id="send" disabled>

$("#email").change(function(){
        var eml = $(this), bt = $("#send");
        $.ajax({
            url: "testingLoginEmail.php",
            type: "POST",
            data: "email=" + eml.val(),
            cache: false,          
            success: function(response){
                if(response == "no"){
                    eml.css("colorXXXX", 'red').next().text("Этот электронный адрес занят!").fadeIn(400);
                    bt.prop("disabled", 1);                
                }else{                 
                    eml.css("colorXXXX", 'green').next().text("");
                    bt.prop("disabled", 0); 
                }                  
            }
        });
    });
Ответить с цитированием
  #7 (permalink)  
Старый 20.06.2017, 07:32
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от daimon0482
возможно ли использовать как то return="false"
Сохраняйте результат проверки, а при отправке формы проверяйте его. Иначе нет.
Ответить с цитированием
  #8 (permalink)  
Старый 20.06.2017, 21:14
Аспирант
Отправить личное сообщение для daimon0482 Посмотреть профиль Найти все сообщения от daimon0482
 
Регистрация: 14.05.2017
Сообщений: 61

laimas. спасибо за помощь нашел такую концовку проверки:
$.ajax({
                url: "testingLoginEmail.php",
                type: "POST",
                data: "email=" + email,
                cache: false,           
                success: function(response){
                 if(response == "no"){
                    $("#email").next().hide().text("Этот электронный адрес занят!").fadeIn(400);
                    $("#email").removeClass().addClass("inputRed");                 
                }else{                  
                    $("#email").removeClass().addClass("inputGreen");
                    $("#email").next().text("");
                    emailStat = 1;
                    buttonOnAndOff();
                }                   
            }
        });
      });
    function buttonOnAndOff(){
        if( telephoneStat == 1 && emailStat == 1 ){
            $("#submit").removeAttr("disabled");
        }else{
            $("#submit").attr("disabled","disabled");
        }
    
    }
});
Ответить с цитированием
  #9 (permalink)  
Старый 20.06.2017, 21:18
Аспирант
Отправить личное сообщение для daimon0482 Посмотреть профиль Найти все сообщения от daimon0482
 
Регистрация: 14.05.2017
Сообщений: 61

как здесь правильнее заменить
disabled
на
return="false"

function buttonOnAndOff(){
        if( telephoneStat == 1 && emailStat == 1 ){
            $("#submit").removeAttr("disabled");
        }else{
            $("#submit").attr("disabled","disabled");
        }
    
    }
Ответить с цитированием
  #10 (permalink)  
Старый 21.06.2017, 04:09
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от daimon0482
нашел такую концовку проверки
Я не знаю где вы нашли такую концовку и какую солянку вы хотите сотворить из кусков где-то найденных, но то что это хрень, "зуб даю".

$("#email").change(function() ... это событие наступит после того, как введено, ушли с поля и продолжаем в другом. Событие же отправки формы, это иное событие, и коли запретить отправление формы, то проверка результата проверки занятости и return должна быть до $.ajax.

$("#email").change(function(){
   ///....
}).data('check', 0);


где 'check' - 0, это поле еще не проверялось, либо проверялось, но результат отрицательный. Соответственно 1, все Ок и форму разрешено отправить. Вот это и нужно проверять.

Последний раз редактировалось laimas, 21.06.2017 в 06:29.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление скроллом "а-ля тач" HonesT Элементы интерфейса 2 27.08.2013 14:25
Как достучаться до всех элементов формы ganzalik228 Events/DOM/Window 4 26.05.2012 18:10
Как обрабатывать поля формы с одинаковыми названиями? javascript_pupil Общие вопросы Javascript 3 11.04.2012 21:25
Как сделать реакцию на изменение любого элемента формы. Mik Events/DOM/Window 3 28.07.2011 08:52
как прекратить отправку формы? magistr_bender Events/DOM/Window 3 17.12.2008 22:37